package com.alpaak.common.utils;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Iterator;
import java.util.Set;


/**
 * 模块说明: 验证对象属性值 
 * 开发人员: xiongxin 
 * 开发时间: 2016年8月15日 
 * 系统版本: v1.0
 */
public class ValidUtils {

	/**
	 * 方法作用：验证对象参数合法性
	 * @param obj 被验证对象
	 * @param groups 验证组（非必选入参）
	 * @return
	 */
	public static String validateModel(Object obj, Class<?>... groups) {
		StringBuffer buffer = new StringBuffer(64);// 用于存储验证后的错误信息

		Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
		Set<ConstraintViolation<Object>> constraintViolations = validator.validate(obj, groups);// 验证某个对象,，其实也可以只验证其中的某一个属性的
		Iterator<ConstraintViolation<Object>> iter = constraintViolations.iterator();
		while (iter.hasNext()) {
			// String message = iter.next().getMessage();
			buffer.append(iter.next().getMessage());
			//buffer.append(CharacterConstant.N);
		}
		return buffer.toString();
	}

	/**
	 * 
	 * 方法作用：验证对象入参异常处理
	 * @param obj
	 * @param resp
	 * @return
	 */
	public static boolean validReqParam(Object obj, Class<?>... groups) {
		// 校验参数
		String validMsg = ValidUtils.validateModel(obj, groups);
		if (StringUtil.isNotNullOrEmpty(validMsg)) {
			//			resp.setErrorNo(ErrorNoConstants.ERR_ASSET_ALL, validMsg);// 传入参数为空
			// resp.setErrorInfo(validateMessage);
			return true;
		}
		return false;
	}
}
